#!/bin/bash

CURRENT_DIR=$(
    cd "$(dirname "$0")"
    pwd
)

# 进入执行器日志目录
cd ${CURRENT_DIR}/logs

# 应用的健康检查URL
HEALTH_CHECK_URL="http://localhost:15001/health/check"

# 预期的HTTP状态码
EXPECTED_STATUS_CODE=200

# 日志文件路径
LOG_FILE="${CURRENT_DIR}/logs/health_check.log"

# 最大日志文件大小（以字节为单位，这里1GB）
MAX_LOG_SIZE=$((1024 * 1024 * 1024))

# 检查日志文件大小并进行截断处理
if [ -f "$LOG_FILE" ] && [ $(stat -c%s "$LOG_FILE") -ge $MAX_LOG_SIZE ]; then
  # 截断日志文件，保留最后10MB的内容
  tail -c 10M "$LOG_FILE" > "${LOG_FILE}.tmp"
  mv "${LOG_FILE}.tmp" "$LOG_FILE"
fi

# 发送HTTP请求并获取状态码
STATUS_CODE=$(curl -s -o /dev/null -w "%{http_code}" $HEALTH_CHECK_URL)

# 检查状态码是否等于预期值
if [ "$STATUS_CODE" -eq "$EXPECTED_STATUS_CODE" ]; then
  echo "$(date): 数据汇聚执行器服务正常，状态码: $STATUS_CODE" >> $LOG_FILE
else
  echo "$(date): 数据汇聚执行器服务异常，状态码: $STATUS_CODE" >> $LOG_FILE
  # 异常处理: 重启服务
  cd ../new/
  sh restart.sh
  cd ../logs/
  echo "$(date): 已重启" >> $LOG_FILE
fi
